<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="generator" content="Asciidoctor 2.0.23">
<meta name="description" content="The LevelX NAND APIs available to the application.">
<title>Chapter 4 - LevelX NAND APIs</title>
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Open+Sans:300,300italic,400,400italic,600,600italic%7CNoto+Serif:400,400italic,700,700italic%7CDroid+Sans+Mono:400,700">
<style>
/*! Asciidoctor default stylesheet | MIT License | https://asciidoctor.org */
/* Uncomment the following line when using as a custom stylesheet */
/* @import "https://fonts.googleapis.com/css?family=Open+Sans:300,300italic,400,400italic,600,600italic%7CNoto+Serif:400,400italic,700,700italic%7CDroid+Sans+Mono:400,700"; */
html{font-family:sans-serif;-webkit-text-size-adjust:100%}
a{background:none}
a:focus{outline:thin dotted}
a:active,a:hover{outline:0}
h1{font-size:2em;margin:.67em 0}
b,strong{font-weight:bold}
abbr{font-size:.9em}
abbr[title]{cursor:help;border-bottom:1px dotted #dddddf;text-decoration:none}
dfn{font-style:italic}
hr{height:0}
mark{background:#ff0;color:#000}
code,kbd,pre,samp{font-family:monospace;font-size:1em}
pre{white-space:pre-wrap}
q{quotes:"\201C" "\201D" "\2018" "\2019"}
small{font-size:80%}
sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}
sup{top:-.5em}
sub{bottom:-.25em}
img{border:0}
svg:not(:root){overflow:hidden}
figure{margin:0}
audio,video{display:inline-block}
audio:not([controls]){display:none;height:0}
fieldset{border:1px solid silver;margin:0 2px;padding:.35em .625em .75em}
legend{border:0;padding:0}
button,input,select,textarea{font-family:inherit;font-size:100%;margin:0}
button,input{line-height:normal}
button,select{text-transform:none}
button,html input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer}
button[disabled],html input[disabled]{cursor:default}
input[type=checkbox],input[type=radio]{padding:0}
button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}
textarea{overflow:auto;vertical-align:top}
table{border-collapse:collapse;border-spacing:0}
*,::before,::after{box-sizing:border-box}
html,body{font-size:100%}
body{background:#fff;color:rgba(0,0,0,.8);padding:0;margin:0;font-family:"Noto Serif","DejaVu Serif",serif;line-height:1;position:relative;cursor:auto;-moz-tab-size:4;-o-tab-size:4;tab-size:4;word-wrap:anywhere;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased}
a:hover{cursor:pointer}
img,object,embed{max-width:100%;height:auto}
object,embed{height:100%}
img{-ms-interpolation-mode:bicubic}
.left{float:left!important}
.right{float:right!important}
.text-left{text-align:left!important}
.text-right{text-align:right!important}
.text-center{text-align:center!important}
.text-justify{text-align:justify!important}
.hide{display:none}
img,object,svg{display:inline-block;vertical-align:middle}
textarea{height:auto;min-height:50px}
select{width:100%}
.subheader,.admonitionblock td.content>.title,.audioblock>.title,.exampleblock>.title,.imageblock>.title,.listingblock>.title,.literalblock>.title,.stemblock>.title,.openblock>.title,.paragraph>.title,.quoteblock>.title,table.tableblock>.title,.verseblock>.title,.videoblock>.title,.dlist>.title,.olist>.title,.ulist>.title,.qlist>.title,.hdlist>.title{line-height:1.45;color:#7a2518;font-weight:400;margin-top:0;margin-bottom:.25em}
div,dl,dt,dd,ul,ol,li,h1,h2,h3,#toctitle,.sidebarblock>.content>.title,h4,h5,h6,pre,form,p,blockquote,th,td{margin:0;padding:0}
a{color:#2156a5;text-decoration:underline;line-height:inherit}
a:hover,a:focus{color:#1d4b8f}
a img{border:0}
p{line-height:1.6;margin-bottom:1.25em;text-rendering:optimizeLegibility}
p aside{font-size:.875em;line-height:1.35;font-style:italic}
h1,h2,h3,#toctitle,.sidebarblock>.content>.title,h4,h5,h6{font-family:"Open Sans","DejaVu Sans",sans-serif;font-weight:300;font-style:normal;color:#ba3925;text-rendering:optimizeLegibility;margin-top:1em;margin-bottom:.5em;line-height:1.0125em}
h1 small,h2 small,h3 small,#toctitle small,.sidebarblock>.content>.title small,h4 small,h5 small,h6 small{font-size:60%;color:#e99b8f;line-height:0}
h1{font-size:2.125em}
h2{font-size:1.6875em}
h3,#toctitle,.sidebarblock>.content>.title{font-size:1.375em}
h4,h5{font-size:1.125em}
h6{font-size:1em}
hr{border:solid #dddddf;border-width:1px 0 0;clear:both;margin:1.25em 0 1.1875em}
em,i{font-style:italic;line-height:inherit}
strong,b{font-weight:bold;line-height:inherit}
small{font-size:60%;line-height:inherit}
code{font-family:"Droid Sans Mono","DejaVu Sans Mono",monospace;font-weight:400;color:rgba(0,0,0,.9)}
ul,ol,dl{line-height:1.6;margin-bottom:1.25em;list-style-position:outside;font-family:inherit}
ul,ol{margin-left:1.5em}
ul li ul,ul li ol{margin-left:1.25em;margin-bottom:0}
ul.circle{list-style-type:circle}
ul.disc{list-style-type:disc}
ul.square{list-style-type:square}
ul.circle ul:not([class]),ul.disc ul:not([class]),ul.square ul:not([class]){list-style:inherit}
ol li ul,ol li ol{margin-left:1.25em;margin-bottom:0}
dl dt{margin-bottom:.3125em;font-weight:bold}
dl dd{margin-bottom:1.25em}
blockquote{margin:0 0 1.25em;padding:.5625em 1.25em 0 1.1875em;border-left:1px solid #ddd}
blockquote,blockquote p{line-height:1.6;color:rgba(0,0,0,.85)}
@media screen and (min-width:768px){h1,h2,h3,#toctitle,.sidebarblock>.content>.title,h4,h5,h6{line-height:1.2}
h1{font-size:2.75em}
h2{font-size:2.3125em}
h3,#toctitle,.sidebarblock>.content>.title{font-size:1.6875em}
h4{font-size:1.4375em}}
table{background:#fff;margin-bottom:1.25em;border:1px solid #dedede;word-wrap:normal}
table thead,table tfoot{background:#f7f8f7}
table thead tr th,table thead tr td,table tfoot tr th,table tfoot tr td{padding:.5em .625em .625em;font-size:inherit;color:rgba(0,0,0,.8);text-align:left}
table tr th,table tr td{padding:.5625em .625em;font-size:inherit;color:rgba(0,0,0,.8)}
table tr.even,table tr.alt{background:#f8f8f7}
table thead tr th,table tfoot tr th,table tbody tr td,table tr td,table tfoot tr td{line-height:1.6}
h1,h2,h3,#toctitle,.sidebarblock>.content>.title,h4,h5,h6{line-height:1.2;word-spacing:-.05em}
h1 strong,h2 strong,h3 strong,#toctitle strong,.sidebarblock>.content>.title strong,h4 strong,h5 strong,h6 strong{font-weight:400}
.center{margin-left:auto;margin-right:auto}
.stretch{width:100%}
.clearfix::before,.clearfix::after,.float-group::before,.float-group::after{content:" ";display:table}
.clearfix::after,.float-group::after{clear:both}
:not(pre).nobreak{word-wrap:normal}
:not(pre).nowrap{white-space:nowrap}
:not(pre).pre-wrap{white-space:pre-wrap}
:not(pre):not([class^=L])>code{font-size:.9375em;font-style:normal!important;letter-spacing:0;padding:.1em .5ex;word-spacing:-.15em;background:#f7f7f8;border-radius:4px;line-height:1.45;text-rendering:optimizeSpeed}
pre{color:rgba(0,0,0,.9);font-family:"Droid Sans Mono","DejaVu Sans Mono",monospace;line-height:1.45;text-rendering:optimizeSpeed}
pre code,pre pre{color:inherit;font-size:inherit;line-height:inherit}
pre>code{display:block}
pre.nowrap,pre.nowrap pre{white-space:pre;word-wrap:normal}
em em{font-style:normal}
strong strong{font-weight:400}
.keyseq{color:rgba(51,51,51,.8)}
kbd{font-family:"Droid Sans Mono","DejaVu Sans Mono",monospace;display:inline-block;color:rgba(0,0,0,.8);font-size:.65em;line-height:1.45;background:#f7f7f7;border:1px solid #ccc;border-radius:3px;box-shadow:0 1px 0 rgba(0,0,0,.2),inset 0 0 0 .1em #fff;margin:0 .15em;padding:.2em .5em;vertical-align:middle;position:relative;top:-.1em;white-space:nowrap}
.keyseq kbd:first-child{margin-left:0}
.keyseq kbd:last-child{margin-right:0}
.menuseq,.menuref{color:#000}
.menuseq b:not(.caret),.menuref{font-weight:inherit}
.menuseq{word-spacing:-.02em}
.menuseq b.caret{font-size:1.25em;line-height:.8}
.menuseq i.caret{font-weight:bold;text-align:center;width:.45em}
b.button::before,b.button::after{position:relative;top:-1px;font-weight:400}
b.button::before{content:"[";padding:0 3px 0 2px}
b.button::after{content:"]";padding:0 2px 0 3px}
p a>code:hover{color:rgba(0,0,0,.9)}
#header,#content,#footnotes,#footer{width:100%;margin:0 auto;max-width:62.5em;*zoom:1;position:relative;padding-left:.9375em;padding-right:.9375em}
#header::before,#header::after,#content::before,#content::after,#footnotes::before,#footnotes::after,#footer::before,#footer::after{content:" ";display:table}
#header::after,#content::after,#footnotes::after,#footer::after{clear:both}
#content{margin-top:1.25em}
#content::before{content:none}
#header>h1:first-child{color:rgba(0,0,0,.85);margin-top:2.25rem;margin-bottom:0}
#header>h1:first-child+#toc{margin-top:8px;border-top:1px solid #dddddf}
#header>h1:only-child{border-bottom:1px solid #dddddf;padding-bottom:8px}
#header .details{border-bottom:1px solid #dddddf;line-height:1.45;padding-top:.25em;padding-bottom:.25em;padding-left:.25em;color:rgba(0,0,0,.6);display:flex;flex-flow:row wrap}
#header .details span:first-child{margin-left:-.125em}
#header .details span.email a{color:rgba(0,0,0,.85)}
#header .details br{display:none}
#header .details br+span::before{content:"\00a0\2013\00a0"}
#header .details br+span.author::before{content:"\00a0\22c5\00a0";color:rgba(0,0,0,.85)}
#header .details br+span#revremark::before{content:"\00a0|\00a0"}
#header #revnumber{text-transform:capitalize}
#header #revnumber::after{content:"\00a0"}
#content>h1:first-child:not([class]){color:rgba(0,0,0,.85);border-bottom:1px solid #dddddf;padding-bottom:8px;margin-top:0;padding-top:1rem;margin-bottom:1.25rem}
#toc{border-bottom:1px solid #e7e7e9;padding-bottom:.5em}
#toc>ul{margin-left:.125em}
#toc ul.sectlevel0>li>a{font-style:italic}
#toc ul.sectlevel0 ul.sectlevel1{margin:.5em 0}
#toc ul{font-family:"Open Sans","DejaVu Sans",sans-serif;list-style-type:none}
#toc li{line-height:1.3334;margin-top:.3334em}
#toc a{text-decoration:none}
#toc a:active{text-decoration:underline}
#toctitle{color:#7a2518;font-size:1.2em}
@media screen and (min-width:768px){#toctitle{font-size:1.375em}
body.toc2{padding-left:15em;padding-right:0}
body.toc2 #header>h1:nth-last-child(2){border-bottom:1px solid #dddddf;padding-bottom:8px}
#toc.toc2{margin-top:0!important;background:#f8f8f7;position:fixed;width:15em;left:0;top:0;border-right:1px solid #e7e7e9;border-top-width:0!important;border-bottom-width:0!important;z-index:1000;padding:1.25em 1em;height:100%;overflow:auto}
#toc.toc2 #toctitle{margin-top:0;margin-bottom:.8rem;font-size:1.2em}
#toc.toc2>ul{font-size:.9em;margin-bottom:0}
#toc.toc2 ul ul{margin-left:0;padding-left:1em}
#toc.toc2 ul.sectlevel0 ul.sectlevel1{padding-left:0;margin-top:.5em;margin-bottom:.5em}
body.toc2.toc-right{padding-left:0;padding-right:15em}
body.toc2.toc-right #toc.toc2{border-right-width:0;border-left:1px solid #e7e7e9;left:auto;right:0}}
@media screen and (min-width:1280px){body.toc2{padding-left:20em;padding-right:0}
#toc.toc2{width:20em}
#toc.toc2 #toctitle{font-size:1.375em}
#toc.toc2>ul{font-size:.95em}
#toc.toc2 ul ul{padding-left:1.25em}
body.toc2.toc-right{padding-left:0;padding-right:20em}}
#content #toc{border:1px solid #e0e0dc;margin-bottom:1.25em;padding:1.25em;background:#f8f8f7;border-radius:4px}
#content #toc>:first-child{margin-top:0}
#content #toc>:last-child{margin-bottom:0}
#footer{max-width:none;background:rgba(0,0,0,.8);padding:1.25em}
#footer-text{color:hsla(0,0%,100%,.8);line-height:1.44}
#content{margin-bottom:.625em}
.sect1{padding-bottom:.625em}
@media screen and (min-width:768px){#content{margin-bottom:1.25em}
.sect1{padding-bottom:1.25em}}
.sect1:last-child{padding-bottom:0}
.sect1+.sect1{border-top:1px solid #e7e7e9}
#content h1>a.anchor,h2>a.anchor,h3>a.anchor,#toctitle>a.anchor,.sidebarblock>.content>.title>a.anchor,h4>a.anchor,h5>a.anchor,h6>a.anchor{position:absolute;z-index:1001;width:1.5ex;margin-left:-1.5ex;display:block;text-decoration:none!important;visibility:hidden;text-align:center;font-weight:400}
#content h1>a.anchor::before,h2>a.anchor::before,h3>a.anchor::before,#toctitle>a.anchor::before,.sidebarblock>.content>.title>a.anchor::before,h4>a.anchor::before,h5>a.anchor::before,h6>a.anchor::before{content:"\00A7";font-size:.85em;display:block;padding-top:.1em}
#content h1:hover>a.anchor,#content h1>a.anchor:hover,h2:hover>a.anchor,h2>a.anchor:hover,h3:hover>a.anchor,#toctitle:hover>a.anchor,.sidebarblock>.content>.title:hover>a.anchor,h3>a.anchor:hover,#toctitle>a.anchor:hover,.sidebarblock>.content>.title>a.anchor:hover,h4:hover>a.anchor,h4>a.anchor:hover,h5:hover>a.anchor,h5>a.anchor:hover,h6:hover>a.anchor,h6>a.anchor:hover{visibility:visible}
#content h1>a.link,h2>a.link,h3>a.link,#toctitle>a.link,.sidebarblock>.content>.title>a.link,h4>a.link,h5>a.link,h6>a.link{color:#ba3925;text-decoration:none}
#content h1>a.link:hover,h2>a.link:hover,h3>a.link:hover,#toctitle>a.link:hover,.sidebarblock>.content>.title>a.link:hover,h4>a.link:hover,h5>a.link:hover,h6>a.link:hover{color:#a53221}
details,.audioblock,.imageblock,.literalblock,.listingblock,.stemblock,.videoblock{margin-bottom:1.25em}
details{margin-left:1.25rem}
details>summary{cursor:pointer;display:block;position:relative;line-height:1.6;margin-bottom:.625rem;outline:none;-webkit-tap-highlight-color:transparent}
details>summary::-webkit-details-marker{display:none}
details>summary::before{content:"";border:solid transparent;border-left:solid;border-width:.3em 0 .3em .5em;position:absolute;top:.5em;left:-1.25rem;transform:translateX(15%)}
details[open]>summary::before{border:solid transparent;border-top:solid;border-width:.5em .3em 0;transform:translateY(15%)}
details>summary::after{content:"";width:1.25rem;height:1em;position:absolute;top:.3em;left:-1.25rem}
.admonitionblock td.content>.title,.audioblock>.title,.exampleblock>.title,.imageblock>.title,.listingblock>.title,.literalblock>.title,.stemblock>.title,.openblock>.title,.paragraph>.title,.quoteblock>.title,table.tableblock>.title,.verseblock>.title,.videoblock>.title,.dlist>.title,.olist>.title,.ulist>.title,.qlist>.title,.hdlist>.title{text-rendering:optimizeLegibility;text-align:left;font-family:"Noto Serif","DejaVu Serif",serif;font-size:1rem;font-style:italic}
table.tableblock.fit-content>caption.title{white-space:nowrap;width:0}
.paragraph.lead>p,#preamble>.sectionbody>[class=paragraph]:first-of-type p{font-size:1.21875em;line-height:1.6;color:rgba(0,0,0,.85)}
.admonitionblock>table{border-collapse:separate;border:0;background:none;width:100%}
.admonitionblock>table td.icon{text-align:center;width:80px}
.admonitionblock>table td.icon img{max-width:none}
.admonitionblock>table td.icon .title{font-weight:bold;font-family:"Open Sans","DejaVu Sans",sans-serif;text-transform:uppercase}
.admonitionblock>table td.content{padding-left:1.125em;padding-right:1.25em;border-left:1px solid #dddddf;color:rgba(0,0,0,.6);word-wrap:anywhere}
.admonitionblock>table td.content>:last-child>:last-child{margin-bottom:0}
.exampleblock>.content{border:1px solid #e6e6e6;margin-bottom:1.25em;padding:1.25em;background:#fff;border-radius:4px}
.sidebarblock{border:1px solid #dbdbd6;margin-bottom:1.25em;padding:1.25em;background:#f3f3f2;border-radius:4px}
.sidebarblock>.content>.title{color:#7a2518;margin-top:0;text-align:center}
.exampleblock>.content>:first-child,.sidebarblock>.content>:first-child{margin-top:0}
.exampleblock>.content>:last-child,.exampleblock>.content>:last-child>:last-child,.exampleblock>.content .olist>ol>li:last-child>:last-child,.exampleblock>.content .ulist>ul>li:last-child>:last-child,.exampleblock>.content .qlist>ol>li:last-child>:last-child,.sidebarblock>.content>:last-child,.sidebarblock>.content>:last-child>:last-child,.sidebarblock>.content .olist>ol>li:last-child>:last-child,.sidebarblock>.content .ulist>ul>li:last-child>:last-child,.sidebarblock>.content .qlist>ol>li:last-child>:last-child{margin-bottom:0}
.literalblock pre,.listingblock>.content>pre{border-radius:4px;overflow-x:auto;padding:1em;font-size:.8125em}
@media screen and (min-width:768px){.literalblock pre,.listingblock>.content>pre{font-size:.90625em}}
@media screen and (min-width:1280px){.literalblock pre,.listingblock>.content>pre{font-size:1em}}
.literalblock pre,.listingblock>.content>pre:not(.highlight),.listingblock>.content>pre[class=highlight],.listingblock>.content>pre[class^="highlight "]{background:#f7f7f8}
.literalblock.output pre{color:#f7f7f8;background:rgba(0,0,0,.9)}
.listingblock>.content{position:relative}
.listingblock code[data-lang]::before{display:none;content:attr(data-lang);position:absolute;font-size:.75em;top:.425rem;right:.5rem;line-height:1;text-transform:uppercase;color:inherit;opacity:.5}
.listingblock:hover code[data-lang]::before{display:block}
.listingblock.terminal pre .command::before{content:attr(data-prompt);padding-right:.5em;color:inherit;opacity:.5}
.listingblock.terminal pre .command:not([data-prompt])::before{content:"$"}
.listingblock pre.highlightjs{padding:0}
.listingblock pre.highlightjs>code{padding:1em;border-radius:4px}
.listingblock pre.prettyprint{border-width:0}
.prettyprint{background:#f7f7f8}
pre.prettyprint .linenums{line-height:1.45;margin-left:2em}
pre.prettyprint li{background:none;list-style-type:inherit;padding-left:0}
pre.prettyprint li code[data-lang]::before{opacity:1}
pre.prettyprint li:not(:first-child) code[data-lang]::before{display:none}
table.linenotable{border-collapse:separate;border:0;margin-bottom:0;background:none}
table.linenotable td[class]{color:inherit;vertical-align:top;padding:0;line-height:inherit;white-space:normal}
table.linenotable td.code{padding-left:.75em}
table.linenotable td.linenos,pre.pygments .linenos{border-right:1px solid;opacity:.35;padding-right:.5em;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}
pre.pygments span.linenos{display:inline-block;margin-right:.75em}
.quoteblock{margin:0 1em 1.25em 1.5em;display:table}
.quoteblock:not(.excerpt)>.title{margin-left:-1.5em;margin-bottom:.75em}
.quoteblock blockquote,.quoteblock p{color:rgba(0,0,0,.85);font-size:1.15rem;line-height:1.75;word-spacing:.1em;letter-spacing:0;font-style:italic;text-align:justify}
.quoteblock blockquote{margin:0;padding:0;border:0}
.quoteblock blockquote::before{content:"\201c";float:left;font-size:2.75em;font-weight:bold;line-height:.6em;margin-left:-.6em;color:#7a2518;text-shadow:0 1px 2px rgba(0,0,0,.1)}
.quoteblock blockquote>.paragraph:last-child p{margin-bottom:0}
.quoteblock .attribution{margin-top:.75em;margin-right:.5ex;text-align:right}
.verseblock{margin:0 1em 1.25em}
.verseblock pre{font-family:"Open Sans","DejaVu Sans",sans-serif;font-size:1.15rem;color:rgba(0,0,0,.85);font-weight:300;text-rendering:optimizeLegibility}
.verseblock pre strong{font-weight:400}
.verseblock .attribution{margin-top:1.25rem;margin-left:.5ex}
.quoteblock .attribution,.verseblock .attribution{font-size:.9375em;line-height:1.45;font-style:italic}
.quoteblock .attribution br,.verseblock .attribution br{display:none}
.quoteblock .attribution cite,.verseblock .attribution cite{display:block;letter-spacing:-.025em;color:rgba(0,0,0,.6)}
.quoteblock.abstract blockquote::before,.quoteblock.excerpt blockquote::before,.quoteblock .quoteblock blockquote::before{display:none}
.quoteblock.abstract blockquote,.quoteblock.abstract p,.quoteblock.excerpt blockquote,.quoteblock.excerpt p,.quoteblock .quoteblock blockquote,.quoteblock .quoteblock p{line-height:1.6;word-spacing:0}
.quoteblock.abstract{margin:0 1em 1.25em;display:block}
.quoteblock.abstract>.title{margin:0 0 .375em;font-size:1.15em;text-align:center}
.quoteblock.excerpt>blockquote,.quoteblock .quoteblock{padding:0 0 .25em 1em;border-left:.25em solid #dddddf}
.quoteblock.excerpt,.quoteblock .quoteblock{margin-left:0}
.quoteblock.excerpt blockquote,.quoteblock.excerpt p,.quoteblock .quoteblock blockquote,.quoteblock .quoteblock p{color:inherit;font-size:1.0625rem}
.quoteblock.excerpt .attribution,.quoteblock .quoteblock .attribution{color:inherit;font-size:.85rem;text-align:left;margin-right:0}
p.tableblock:last-child{margin-bottom:0}
td.tableblock>.content{margin-bottom:1.25em;word-wrap:anywhere}
td.tableblock>.content>:last-child{margin-bottom:-1.25em}
table.tableblock,th.tableblock,td.tableblock{border:0 solid #dedede}
table.grid-all>*>tr>*{border-width:1px}
table.grid-cols>*>tr>*{border-width:0 1px}
table.grid-rows>*>tr>*{border-width:1px 0}
table.frame-all{border-width:1px}
table.frame-ends{border-width:1px 0}
table.frame-sides{border-width:0 1px}
table.frame-none>colgroup+*>:first-child>*,table.frame-sides>colgroup+*>:first-child>*{border-top-width:0}
table.frame-none>:last-child>:last-child>*,table.frame-sides>:last-child>:last-child>*{border-bottom-width:0}
table.frame-none>*>tr>:first-child,table.frame-ends>*>tr>:first-child{border-left-width:0}
table.frame-none>*>tr>:last-child,table.frame-ends>*>tr>:last-child{border-right-width:0}
table.stripes-all>*>tr,table.stripes-odd>*>tr:nth-of-type(odd),table.stripes-even>*>tr:nth-of-type(even),table.stripes-hover>*>tr:hover{background:#f8f8f7}
th.halign-left,td.halign-left{text-align:left}
th.halign-right,td.halign-right{text-align:right}
th.halign-center,td.halign-center{text-align:center}
th.valign-top,td.valign-top{vertical-align:top}
th.valign-bottom,td.valign-bottom{vertical-align:bottom}
th.valign-middle,td.valign-middle{vertical-align:middle}
table thead th,table tfoot th{font-weight:bold}
tbody tr th{background:#f7f8f7}
tbody tr th,tbody tr th p,tfoot tr th,tfoot tr th p{color:rgba(0,0,0,.8);font-weight:bold}
p.tableblock>code:only-child{background:none;padding:0}
p.tableblock{font-size:1em}
ol{margin-left:1.75em}
ul li ol{margin-left:1.5em}
dl dd{margin-left:1.125em}
dl dd:last-child,dl dd:last-child>:last-child{margin-bottom:0}
li p,ul dd,ol dd,.olist .olist,.ulist .ulist,.ulist .olist,.olist .ulist{margin-bottom:.625em}
ul.checklist,ul.none,ol.none,ul.no-bullet,ol.no-bullet,ol.unnumbered,ul.unstyled,ol.unstyled{list-style-type:none}
ul.no-bullet,ol.no-bullet,ol.unnumbered{margin-left:.625em}
ul.unstyled,ol.unstyled{margin-left:0}
li>p:empty:only-child::before{content:"";display:inline-block}
ul.checklist>li>p:first-child{margin-left:-1em}
ul.checklist>li>p:first-child>.fa-square-o:first-child,ul.checklist>li>p:first-child>.fa-check-square-o:first-child{width:1.25em;font-size:.8em;position:relative;bottom:.125em}
ul.checklist>li>p:first-child>input[type=checkbox]:first-child{margin-right:.25em}
ul.inline{display:flex;flex-flow:row wrap;list-style:none;margin:0 0 .625em -1.25em}
ul.inline>li{margin-left:1.25em}
.unstyled dl dt{font-weight:400;font-style:normal}
ol.arabic{list-style-type:decimal}
ol.decimal{list-style-type:decimal-leading-zero}
ol.loweralpha{list-style-type:lower-alpha}
ol.upperalpha{list-style-type:upper-alpha}
ol.lowerroman{list-style-type:lower-roman}
ol.upperroman{list-style-type:upper-roman}
ol.lowergreek{list-style-type:lower-greek}
.hdlist>table,.colist>table{border:0;background:none}
.hdlist>table>tbody>tr,.colist>table>tbody>tr{background:none}
td.hdlist1,td.hdlist2{vertical-align:top;padding:0 .625em}
td.hdlist1{font-weight:bold;padding-bottom:1.25em}
td.hdlist2{word-wrap:anywhere}
.literalblock+.colist,.listingblock+.colist{margin-top:-.5em}
.colist td:not([class]):first-child{padding:.4em .75em 0;line-height:1;vertical-align:top}
.colist td:not([class]):first-child img{max-width:none}
.colist td:not([class]):last-child{padding:.25em 0}
.thumb,.th{line-height:0;display:inline-block;border:4px solid #fff;box-shadow:0 0 0 1px #ddd}
.imageblock.left{margin:.25em .625em 1.25em 0}
.imageblock.right{margin:.25em 0 1.25em .625em}
.imageblock>.title{margin-bottom:0}
.imageblock.thumb,.imageblock.th{border-width:6px}
.imageblock.thumb>.title,.imageblock.th>.title{padding:0 .125em}
.image.left,.image.right{margin-top:.25em;margin-bottom:.25em;display:inline-block;line-height:0}
.image.left{margin-right:.625em}
.image.right{margin-left:.625em}
a.image{text-decoration:none;display:inline-block}
a.image object{pointer-events:none}
sup.footnote,sup.footnoteref{font-size:.875em;position:static;vertical-align:super}
sup.footnote a,sup.footnoteref a{text-decoration:none}
sup.footnote a:active,sup.footnoteref a:active,#footnotes .footnote a:first-of-type:active{text-decoration:underline}
#footnotes{padding-top:.75em;padding-bottom:.75em;margin-bottom:.625em}
#footnotes hr{width:20%;min-width:6.25em;margin:-.25em 0 .75em;border-width:1px 0 0}
#footnotes .footnote{padding:0 .375em 0 .225em;line-height:1.3334;font-size:.875em;margin-left:1.2em;margin-bottom:.2em}
#footnotes .footnote a:first-of-type{font-weight:bold;text-decoration:none;margin-left:-1.05em}
#footnotes .footnote:last-of-type{margin-bottom:0}
#content #footnotes{margin-top:-.625em;margin-bottom:0;padding:.75em 0}
div.unbreakable{page-break-inside:avoid}
.big{font-size:larger}
.small{font-size:smaller}
.underline{text-decoration:underline}
.overline{text-decoration:overline}
.line-through{text-decoration:line-through}
.aqua{color:#00bfbf}
.aqua-background{background:#00fafa}
.black{color:#000}
.black-background{background:#000}
.blue{color:#0000bf}
.blue-background{background:#0000fa}
.fuchsia{color:#bf00bf}
.fuchsia-background{background:#fa00fa}
.gray{color:#606060}
.gray-background{background:#7d7d7d}
.green{color:#006000}
.green-background{background:#007d00}
.lime{color:#00bf00}
.lime-background{background:#00fa00}
.maroon{color:#600000}
.maroon-background{background:#7d0000}
.navy{color:#000060}
.navy-background{background:#00007d}
.olive{color:#606000}
.olive-background{background:#7d7d00}
.purple{color:#600060}
.purple-background{background:#7d007d}
.red{color:#bf0000}
.red-background{background:#fa0000}
.silver{color:#909090}
.silver-background{background:#bcbcbc}
.teal{color:#006060}
.teal-background{background:#007d7d}
.white{color:#bfbfbf}
.white-background{background:#fafafa}
.yellow{color:#bfbf00}
.yellow-background{background:#fafa00}
span.icon>.fa{cursor:default}
a span.icon>.fa{cursor:inherit}
.admonitionblock td.icon [class^="fa icon-"]{font-size:2.5em;text-shadow:1px 1px 2px rgba(0,0,0,.5);cursor:default}
.admonitionblock td.icon .icon-note::before{content:"\f05a";color:#19407c}
.admonitionblock td.icon .icon-tip::before{content:"\f0eb";text-shadow:1px 1px 2px rgba(155,155,0,.8);color:#111}
.admonitionblock td.icon .icon-warning::before{content:"\f071";color:#bf6900}
.admonitionblock td.icon .icon-caution::before{content:"\f06d";color:#bf3400}
.admonitionblock td.icon .icon-important::before{content:"\f06a";color:#bf0000}
.conum[data-value]{display:inline-block;color:#fff!important;background:rgba(0,0,0,.8);border-radius:50%;text-align:center;font-size:.75em;width:1.67em;height:1.67em;line-height:1.67em;font-family:"Open Sans","DejaVu Sans",sans-serif;font-style:normal;font-weight:bold}
.conum[data-value] *{color:#fff!important}
.conum[data-value]+b{display:none}
.conum[data-value]::after{content:attr(data-value)}
pre .conum[data-value]{position:relative;top:-.125em}
b.conum *{color:inherit!important}
.conum:not([data-value]):empty{display:none}
dt,th.tableblock,td.content,div.footnote{text-rendering:optimizeLegibility}
h1,h2,p,td.content,span.alt,summary{letter-spacing:-.01em}
p strong,td.content strong,div.footnote strong{letter-spacing:-.005em}
p,blockquote,dt,td.content,td.hdlist1,span.alt,summary{font-size:1.0625rem}
p{margin-bottom:1.25rem}
.sidebarblock p,.sidebarblock dt,.sidebarblock td.content,p.tableblock{font-size:1em}
.exampleblock>.content{background:#fffef7;border-color:#e0e0dc;box-shadow:0 1px 4px #e0e0dc}
.print-only{display:none!important}
@page{margin:1.25cm .75cm}
@media print{*{box-shadow:none!important;text-shadow:none!important}
html{font-size:80%}
a{color:inherit!important;text-decoration:underline!important}
a.bare,a[href^="#"],a[href^="mailto:"]{text-decoration:none!important}
a[href^="http:"]:not(.bare)::after,a[href^="https:"]:not(.bare)::after{content:"(" attr(href) ")";display:inline-block;font-size:.875em;padding-left:.25em}
abbr[title]{border-bottom:1px dotted}
abbr[title]::after{content:" (" attr(title) ")"}
pre,blockquote,tr,img,object,svg{page-break-inside:avoid}
thead{display:table-header-group}
svg{max-width:100%}
p,blockquote,dt,td.content{font-size:1em;orphans:3;widows:3}
h2,h3,#toctitle,.sidebarblock>.content>.title{page-break-after:avoid}
#header,#content,#footnotes,#footer{max-width:none}
#toc,.sidebarblock,.exampleblock>.content{background:none!important}
#toc{border-bottom:1px solid #dddddf!important;padding-bottom:0!important}
body.book #header{text-align:center}
body.book #header>h1:first-child{border:0!important;margin:2.5em 0 1em}
body.book #header .details{border:0!important;display:block;padding:0!important}
body.book #header .details span:first-child{margin-left:0!important}
body.book #header .details br{display:block}
body.book #header .details br+span::before{content:none!important}
body.book #toc{border:0!important;text-align:left!important;padding:0!important;margin:0!important}
body.book #toc,body.book #preamble,body.book h1.sect0,body.book .sect1>h2{page-break-before:always}
.listingblock code[data-lang]::before{display:block}
#footer{padding:0 .9375em}
.hide-on-print{display:none!important}
.print-only{display:block!important}
.hide-for-print{display:none!important}
.show-for-print{display:inherit!important}}
@media amzn-kf8,print{#header>h1:first-child{margin-top:1.25rem}
.sect1{padding:0!important}
.sect1+.sect1{border:0}
#footer{background:none}
#footer-text{color:rgba(0,0,0,.6);font-size:.9em}}
@media amzn-kf8{#header,#content,#footnotes,#footer{padding:0}}
</style>
</head>
<body class="article">
<div id="header">
<h1>Chapter 4 - LevelX NAND APIs</h1>
</div>
<div id="content">
<div id="preamble">
<div class="sectionbody">
<div class="paragraph">
<p>The LevelX NAND API functions available to the application are as follows.</p>
</div>
</div>
</div>
<div class="sect1">
<h2 id="_nand_services">NAND_Services</h2>
<div class="sectionbody">
<div class="ulist">
<ul>
<li>
<p><a href="#lx_nand_flash_close">lx_nand_flash_close</a></p>
</li>
<li>
<p><a href="#lx_nand_flash_initialize">lx_nand_flash_initialize</a></p>
</li>
<li>
<p><a href="#lx_nand_flash_open">lx_nand_flash_open</a></p>
</li>
<li>
<p><a href="#lx_nand_flash_page_ecc_check">lx_nand_flash_page_ecc_check</a></p>
</li>
<li>
<p><a href="#lx_nand_flash_page_ecc_compute">lx_nand_flash_page_ecc_compute</a></p>
</li>
<li>
<p><a href="#lx_nand_flash_sectors_read">lx_nand_flash_sectors_read</a></p>
</li>
<li>
<p><a href="#lx_nand_flash_sectors_release">lx_nand_flash_sectors_release</a></p>
</li>
<li>
<p><a href="#lx_nand_flash_sectors_write">lx_nand_flash_sectors_write</a></p>
</li>
</ul>
</div>
</div>
</div>
<div class="sect1">
<h2 id="_lx_nand_flash_close">lx_nand_flash_close</h2>
<div class="sectionbody">
<div class="paragraph">
<p>Close NAND flash instance</p>
</div>
<div class="sect2">
<h3 id="_prototype">Prototype</h3>
<div class="listingblock">
<div class="content">
<pre class="highlight"><code class="language-c" data-lang="c">UINT lx_nand_flash_close(LX_NAND_FLASH *nand_flash);</code></pre>
</div>
</div>
</div>
<div class="sect2">
<h3 id="_description">Description</h3>
<div class="paragraph">
<p>This service closes the previously opened NAND flash instance.</p>
</div>
</div>
<div class="sect2">
<h3 id="_input_parameters">Input Parameters</h3>
<div class="ulist">
<ul>
<li>
<p><em>nand_flash</em>: NAND flash instance pointer.</p>
</li>
</ul>
</div>
</div>
<div class="sect2">
<h3 id="_return_values">Return Values</h3>
<div class="ulist">
<ul>
<li>
<p><strong>LX_SUCCESS</strong>: (0x00) Successful request.</p>
</li>
<li>
<p><strong>LX_ERROR</strong>: (0x01) Error closing flash instance.</p>
</li>
</ul>
</div>
</div>
<div class="sect2">
<h3 id="_allowed_from">Allowed From</h3>
<div class="paragraph">
<p>Threads</p>
</div>
</div>
<div class="sect2">
<h3 id="_example">Example</h3>
<div class="listingblock">
<div class="content">
<pre class="highlight"><code class="language-c" data-lang="c">/* Close NAND flash instance "my_nand_flash". */
status = lx_nand_flash_close(&amp;my_nand_flash);

/* If status is LX_SUCCESS the request was successful. */</code></pre>
</div>
</div>
</div>
<div class="sect2">
<h3 id="_see_also">See Also</h3>
<div class="ulist">
<ul>
<li>
<p><a href="#_nand_services">levelx NAND Services</a></p>
</li>
</ul>
</div>
</div>
</div>
</div>
<div class="sect1">
<h2 id="_lx_nand_flash_defragment">lx_nand_flash_defragment</h2>
<div class="sectionbody">
<div class="paragraph">
<p>Defragment NAND flash instance</p>
</div>
<div class="sect2">
<h3 id="_prototype_2">Prototype</h3>
<div class="listingblock">
<div class="content">
<pre class="highlight"><code class="language-c" data-lang="c">UINT lx_nand_flash_defragment(LX_NAND_FLASH *nand_flash);</code></pre>
</div>
</div>
</div>
<div class="sect2">
<h3 id="_description_2">Description</h3>
<div class="paragraph">
<p>This service is deprecated and not supported.</p>
</div>
</div>
<div class="sect2">
<h3 id="_input_parameters_2">Input Parameters</h3>
<div class="ulist">
<ul>
<li>
<p><em>nand_flash</em>: NAND flash instance pointer.</p>
</li>
</ul>
</div>
</div>
<div class="sect2">
<h3 id="_return_values_2">Return Values</h3>
<div class="ulist">
<ul>
<li>
<p><strong>LX_NOT_SUPPORTED</strong>: (0x0C) Not supported.</p>
</li>
</ul>
</div>
</div>
<div class="sect2">
<h3 id="_allowed_from_2">Allowed From</h3>
<div class="paragraph">
<p>Threads</p>
</div>
</div>
<div class="sect2">
<h3 id="_example_2">Example</h3>
<div class="listingblock">
<div class="content">
<pre class="highlight"><code class="language-c" data-lang="c">/* Defragment NAND flash instance "my_nand_flash". */
status = lx_nand_flash_defragment(&amp;my_nand_flash);

/* If status is LX_SUCCESS the request was successful. */</code></pre>
</div>
</div>
</div>
<div class="sect2">
<h3 id="_see_also_2">See Also</h3>
<div class="ulist">
<ul>
<li>
<p><a href="#_nand_services">levelx NAND Services</a></p>
</li>
</ul>
</div>
</div>
</div>
</div>
<div class="sect1">
<h2 id="_lx_nand_flash_extended_cache_enable">lx_nand_flash_extended_cache_enable</h2>
<div class="sectionbody">
<div class="paragraph">
<p>Enable/disable extended NAND cache</p>
</div>
<div class="sect2">
<h3 id="_prototype_3">Prototype</h3>
<div class="listingblock">
<div class="content">
<pre class="highlight"><code class="language-c" data-lang="c">UINT lx_nand_flash_extended_cache_enable(
    LX_NAND_FLASH
    *nand_flash,
    VOID *memory,
    ULONG size);</code></pre>
</div>
</div>
</div>
<div class="sect2">
<h3 id="_description_3">Description</h3>
<div class="paragraph">
<p>This service is deprecated and not supported.</p>
</div>
</div>
<div class="sect2">
<h3 id="_input_parameters_3">Input Parameters</h3>
<div class="ulist">
<ul>
<li>
<p><em>nand_flash</em>: NAND flash instance pointer.</p>
</li>
<li>
<p><em>memory</em>: Starting address for cache memory aligned for ULONG access. A value of LX_NULL disables the cache.</p>
</li>
<li>
<p><em>size</em>: The size in bytes of the memory supplied.</p>
</li>
</ul>
</div>
</div>
<div class="sect2">
<h3 id="_return_values_3">Return Values</h3>
<div class="ulist">
<ul>
<li>
<p><strong>LX_NOT_SUPPORTED</strong>: (0x0C) Not supported.</p>
</li>
</ul>
</div>
</div>
<div class="sect2">
<h3 id="_allowed_from_3">Allowed From</h3>
<div class="paragraph">
<p>Threads</p>
</div>
</div>
<div class="sect2">
<h3 id="_example_3">Example</h3>
<div class="listingblock">
<div class="content">
<pre class="highlight"><code class="language-c" data-lang="c">/* Enable the NAND flash cache for the instance "my_nand_flash". */
status = lx_nand_flash_extended_cache_enable(&amp;my_nand_flash,
    &amp;my_memory, sizeof(my_memory));

/* If status is LX_SUCCESS the request was successful. */</code></pre>
</div>
</div>
</div>
<div class="sect2">
<h3 id="_see_also_3">See Also</h3>
<div class="ulist">
<ul>
<li>
<p><a href="#_nand_services">levelx NAND Services</a></p>
</li>
</ul>
</div>
</div>
</div>
</div>
<div class="sect1">
<h2 id="_lx_nand_flash_format">lx_nand_flash_format</h2>
<div class="sectionbody">
<div class="paragraph">
<p>Format NAND flash instance</p>
</div>
<div class="sect2">
<h3 id="_prototype_4">Prototype</h3>
<div class="listingblock">
<div class="content">
<pre class="highlight"><code class="language-c" data-lang="c">UINT  _lx_nand_flash_format(LX_NAND_FLASH* nand_flash, CHAR* name,
                            UINT(*nand_driver_initialize)(LX_NAND_FLASH*),
                            ULONG* memory_ptr, UINT memory_size);</code></pre>
</div>
</div>
</div>
<div class="sect2">
<h3 id="_description_4">Description</h3>
<div class="paragraph">
<p>This service erase the NAND flash and formats the NAND flash instance with the specified name, driver initialization function. Note that the driver initialization function is responsible for installing various function pointers for reading, writing, and erasing blocks/pages of the NAND hardware associated with this NAND flash instance.</p>
</div>
</div>
<div class="sect2">
<h3 id="_input_parameters_4">Input Parameters</h3>
<div class="ulist">
<ul>
<li>
<p><em>nand_flash</em>: NAND flash instance pointer.</p>
</li>
<li>
<p><em>name</em>: Name of NAND flash instance.</p>
</li>
<li>
<p><em>nand_driver_initialize</em>: Function pointer to NAND flash driver initialization function. Please refer to Chapter 3 of this guide for more details on NAND flash driver responsibilities.</p>
</li>
<li>
<p><em>memory_ptr</em>: Pointer to working memory for LevelX.</p>
</li>
<li>
<p><em>memory_size</em>: Size of working memory for LevelX. The size must be at least 7 * total block count + 2 * page size.</p>
</li>
</ul>
</div>
</div>
<div class="sect2">
<h3 id="_return_values_4">Return Values</h3>
<div class="ulist">
<ul>
<li>
<p><strong>LX_SUCCESS</strong>: (0x00) Successful request.</p>
</li>
<li>
<p><strong>LX_ERROR</strong>: (0x01) Error formatting NAND flash instance.</p>
</li>
<li>
<p><strong>LX_NO_BLOCKS</strong>: (0x0B) Not enough blocks to format NAND flash instance.</p>
</li>
</ul>
</div>
</div>
<div class="sect2">
<h3 id="_allowed_from_4">Allowed From</h3>
<div class="paragraph">
<p>Threads</p>
</div>
</div>
<div class="sect2">
<h3 id="_example_4">Example</h3>
<div class="listingblock">
<div class="content">
<pre class="highlight"><code class="language-c" data-lang="c">/* Format NAND flash instance "my_nand_flash". */
status = lx_nand_flash_format(&amp;my_nand_flash, "my nand flash",
    my_nand_driver_initialize, &amp;my_memory, sizeof(my_memory));

/* If status is LX_SUCCESS the NAND is erased and initial format is built, it can be opened later by calling lx_nand_flash_open. */</code></pre>
</div>
</div>
</div>
<div class="sect2">
<h3 id="_see_also_4">See Also</h3>
<div class="ulist">
<ul>
<li>
<p><a href="#_nand_services">levelx NAND Services</a></p>
</li>
</ul>
</div>
</div>
</div>
</div>
<div class="sect1">
<h2 id="_lx_nand_flash_initialize">lx_nand_flash_initialize</h2>
<div class="sectionbody">
<div class="paragraph">
<p>Initialize NAND flash support</p>
</div>
<div class="sect2">
<h3 id="_prototype_5">Prototype</h3>
<div class="listingblock">
<div class="content">
<pre class="highlight"><code class="language-c" data-lang="c">UINT lx_nand_flash_initialize(void);</code></pre>
</div>
</div>
</div>
<div class="sect2">
<h3 id="_description_5">Description</h3>
<div class="paragraph">
<p>This service initializes LevelX NAND flash support. It must be called before any other LevelX NAND APIs.</p>
</div>
</div>
<div class="sect2">
<h3 id="_input_parameters_5">Input Parameters</h3>
<div class="ulist">
<ul>
<li>
<p><strong>None</strong></p>
</li>
</ul>
</div>
</div>
<div class="sect2">
<h3 id="_return_values_5">Return Values</h3>
<div class="ulist">
<ul>
<li>
<p><strong>LX_SUCCESS</strong>: (0x00) Successful request.</p>
</li>
<li>
<p><strong>LX_ERROR</strong>: (0x01) Error initializing NAND flash support.</p>
</li>
</ul>
</div>
</div>
<div class="sect2">
<h3 id="_allowed_from_5">Allowed From</h3>
<div class="paragraph">
<p>Initialization, Threads</p>
</div>
</div>
<div class="sect2">
<h3 id="_example_5">Example</h3>
<div class="listingblock">
<div class="content">
<pre class="highlight"><code class="language-c" data-lang="c">/* Initialize NAND flash support. */
status = lx_nand_flash_initialize();

/* If status is LX_SUCCESS the request was successful. */</code></pre>
</div>
</div>
</div>
<div class="sect2">
<h3 id="_see_also_5">See Also</h3>
<div class="ulist">
<ul>
<li>
<p><a href="#_nand_services">levelx NAND Services</a></p>
</li>
</ul>
</div>
</div>
</div>
</div>
<div class="sect1">
<h2 id="_lx_nand_flash_open">lx_nand_flash_open</h2>
<div class="sectionbody">
<div class="paragraph">
<p>Open NAND flash instance</p>
</div>
<div class="sect2">
<h3 id="_prototype_6">Prototype</h3>
<div class="listingblock">
<div class="content">
<pre class="highlight"><code class="language-c" data-lang="c">UINT lx_nand_flash_open(
    LX_NAND_FLASH *nand_flash,
    CHAR *name,
    UINT (*nand_driver_initialize) (LX_NAND_FLASH *),
    ULONG* memory_ptr,
    UINT memory_size);</code></pre>
</div>
</div>
</div>
<div class="sect2">
<h3 id="_description_6">Description</h3>
<div class="paragraph">
<p>This service opens a NAND flash instance with the specified NAND flash control block and driver initialization function. Note that the driver initialization function is responsible for installing various function pointers for reading, writing, and erasing blocks/pages of the NAND hardware associated with this NAND flash instance.</p>
</div>
</div>
<div class="sect2">
<h3 id="_input_parameters_6">Input Parameters</h3>
<div class="ulist">
<ul>
<li>
<p><em>nand_flash</em>: NAND flash instance pointer.</p>
</li>
<li>
<p><em>name</em>: Name of NAND flash instance.</p>
</li>
<li>
<p><em>nand_driver_initialize</em>: Function pointer to NAND flash driver initialization function. Please refer to Chapter 3 of this guide for more details on NAND flash driver responsibilities.</p>
</li>
<li>
<p><em>memory_ptr</em>: Pointer to working memory for LevelX.</p>
</li>
<li>
<p><em>memory_size</em>: Size of working memory for LevelX. The size must be at least 7 * total block count + 2 * page size.</p>
</li>
</ul>
</div>
</div>
<div class="sect2">
<h3 id="_return_values_6">Return Values</h3>
<div class="ulist">
<ul>
<li>
<p><strong>LX_SUCCESS</strong>: (0x00) Successful request.</p>
</li>
<li>
<p><strong>LX_ERROR</strong>: (0x01) Error opening NAND flash instance.</p>
</li>
<li>
<p><strong>LX_NO_MEMORY</strong>: (0x08) Driver did not provide buffer for reading one page into RAM.</p>
</li>
</ul>
</div>
</div>
<div class="sect2">
<h3 id="_allowed_from_6">Allowed From</h3>
<div class="paragraph">
<p>Threads</p>
</div>
</div>
<div class="sect2">
<h3 id="_example_6">Example</h3>
<div class="listingblock">
<div class="content">
<pre class="highlight"><code class="language-c" data-lang="c">/* Open NAND flash instance "my_nand_flash" with the driver "my_nand_driver_initialize". */
status = lx_nand_flash_open(&amp;my_nand_flash,"my nand flash",
    my_nand_driver_initialize, &amp;my_memory, sizeof(my_memory));

/* If status is LX_SUCCESS the request was successful. */</code></pre>
</div>
</div>
</div>
<div class="sect2">
<h3 id="_see_also_6">See Also</h3>
<div class="ulist">
<ul>
<li>
<p>lx_nand_flash_close</p>
</li>
<li>
<p>lx_nand_flash_initialize</p>
</li>
<li>
<p>lx_nand_flash_page_ecc_check</p>
</li>
<li>
<p>lx_nand_flash_page_ecc_compute</p>
</li>
<li>
<p>lx_nand_flash_sectors_read</p>
</li>
<li>
<p>lx_nand_flash_sectors_release</p>
</li>
<li>
<p>lx_nand_flash_sectors_write</p>
</li>
</ul>
</div>
</div>
</div>
</div>
<div class="sect1">
<h2 id="_lx_nand_flash_page_ecc_check">lx_nand_flash_page_ecc_check</h2>
<div class="sectionbody">
<div class="paragraph">
<p>Check page for ECC errors with correction</p>
</div>
<div class="sect2">
<h3 id="_prototype_7">Prototype</h3>
<div class="listingblock">
<div class="content">
<pre class="highlight"><code class="language-c" data-lang="c">UINT lx_nand_flash_page_ecc_check(
    LX_NAND_FLASH *nand_flash,
    UCHAR *page_buffer,
    UCHAR *ecc_buffer);</code></pre>
</div>
</div>
</div>
<div class="sect2">
<h3 id="_description_7">Description</h3>
<div class="paragraph">
<p>This service verifies the integrity of the supplied NAND page buffer with the supplied ECC. Page size (defined in the NAND flash instance pointer) is assumed to be a multiple of 256-bytes and the ECC code supplied is capable of correcting a 1 bit error in each 256-byte portion of the page.</p>
</div>
</div>
<div class="sect2">
<h3 id="_input_parameters_7">Input Parameters</h3>
<div class="ulist">
<ul>
<li>
<p><em>nand_flash</em>: NAND flash instance pointer.</p>
</li>
<li>
<p><em>page_buffer</em>: Pointer to NAND flash page buffer.</p>
</li>
<li>
<p><em>ecc_buffer</em>: Pointer to ECC for NAND flash page. Note that there are 3 ECC bytes per 256-byte portion of the page.</p>
</li>
</ul>
</div>
</div>
<div class="sect2">
<h3 id="_return_values_7">Return Values</h3>
<div class="ulist">
<ul>
<li>
<p><strong>LX_SUCCESS</strong>: (0x00) NAND page has no errors.</p>
</li>
<li>
<p><strong>LX_NAND_ERROR_CORRECTED</strong>: (0x06) One or more 1-bit errors were corrected in the NAND page&#8212;&#8203;correction(s) are in the page buffer.</p>
</li>
<li>
<p><strong>LX_NAND_ERROR_NOT_CORRECTED</strong>: (0x07) Too many errors to correct on the NAND page.</p>
</li>
</ul>
</div>
</div>
<div class="sect2">
<h3 id="_allowed_from_7">Allowed From</h3>
<div class="paragraph">
<p>LevelX Driver</p>
</div>
</div>
<div class="sect2">
<h3 id="_example_7">Example</h3>
<div class="listingblock">
<div class="content">
<pre class="highlight"><code class="language-c" data-lang="c">/* Check the NAND page pointed to by "page_pointer" of the NAND flash instance "my_nand_flash" . */
status = lx_nand_flash_page_ecc_check(&amp;my_nand_flash, page_pointer, ecc_pointer);

/* If status is LX_SUCCESS the page is valid. */</code></pre>
</div>
</div>
</div>
<div class="sect2">
<h3 id="_see_also_7">See Also</h3>
<div class="ulist">
<ul>
<li>
<p><a href="#_nand_services">levelx NAND Services</a></p>
</li>
</ul>
</div>
</div>
</div>
</div>
<div class="sect1">
<h2 id="_lx_nand_flash_page_ecc_compute">lx_nand_flash_page_ecc_compute</h2>
<div class="sectionbody">
<div class="paragraph">
<p>Compute ECC for page</p>
</div>
<div class="sect2">
<h3 id="_prototype_8">Prototype</h3>
<div class="listingblock">
<div class="content">
<pre class="highlight"><code class="language-c" data-lang="c">UINT lx_nand_flash_page_ecc_compute(
    LX_NAND_FLASH *nand_flash,
    UCHAR *page_buffer,
    UCHAR *ecc_buffer);</code></pre>
</div>
</div>
</div>
<div class="sect2">
<h3 id="_description_8">Description</h3>
<div class="paragraph">
<p>This service computes the ECC of the supplied NAND page buffer and returns the ECC in the supplied ECC buffer. Page size is assume to be a multiple of 256-bytes (defined in the NAND flash instance pointer). The ECC code is used to verify the integrity of the page when it is read at a later time.</p>
</div>
</div>
<div class="sect2">
<h3 id="_input_parameters_8">Input Parameters</h3>
<div class="ulist">
<ul>
<li>
<p><em>nand_flash</em>: NAND flash instance pointer.</p>
</li>
<li>
<p><em>page_buffer</em>: Pointer to NAND flash page buffer.</p>
</li>
<li>
<p><em>ecc_buffer</em>: Pointer to destination for ECC of the NAND flash page. Note that must be 3 bytes of ECC storage per 256-byte portion of the page. For example, a 2048 byte page would require 24 bytes for the ECC.</p>
</li>
</ul>
</div>
</div>
<div class="sect2">
<h3 id="_return_values_8">Return Values</h3>
<div class="ulist">
<ul>
<li>
<p><strong>LX_SUCCESS</strong>: (0x00) ECC successfully calculated.</p>
</li>
<li>
<p><strong>LX_ERROR</strong>: (0x01) Error calculating ECC.</p>
</li>
</ul>
</div>
</div>
<div class="sect2">
<h3 id="_allowed_from_8">Allowed From</h3>
<div class="paragraph">
<p>LevelX Driver</p>
</div>
</div>
<div class="sect2">
<h3 id="_example_8">Example</h3>
<div class="listingblock">
<div class="content">
<pre class="highlight"><code class="language-c" data-lang="c">/* Compute ECC for the NAND page pointed to by "page_pointer" of the NAND flash instance "my_nand_flash". */
status = lx_nand_flash_page_ecc_compute(&amp;my_nand_flash, page_pointer, ecc_pointer);

/* If status is LX_SUCCESS the ECC was calculated and Can be found in the memory pointed to by "ecc_pointer." */</code></pre>
</div>
</div>
</div>
<div class="sect2">
<h3 id="_see_also_8">See Also</h3>
<div class="ulist">
<ul>
<li>
<p><a href="#_nand_services">levelx NAND Services</a></p>
</li>
</ul>
</div>
</div>
</div>
</div>
<div class="sect1">
<h2 id="_lx_nand_flash_partial_defragment">lx_nand_flash_partial_defragment</h2>
<div class="sectionbody">
<div class="paragraph">
<p>Partial defragment of NAND flash instance</p>
</div>
<div class="sect2">
<h3 id="_prototype_9">Prototype</h3>
<div class="listingblock">
<div class="content">
<pre class="highlight"><code class="language-c" data-lang="c">UINT lx_nand_flash_partial_defragment(
    LX_NAND_FLASH *nand_flash,
    UINT max_blocks);</code></pre>
</div>
</div>
</div>
<div class="sect2">
<h3 id="_description_9">Description</h3>
<div class="paragraph">
<p>This service is deprecated and not supported.</p>
</div>
</div>
<div class="sect2">
<h3 id="_input_parameters_9">Input Parameters</h3>
<div class="ulist">
<ul>
<li>
<p><em>nand_flash</em>: NAND flash instance pointer.</p>
</li>
<li>
<p><em>max_blocks</em>: Maximum number of blocks.</p>
</li>
</ul>
</div>
</div>
<div class="sect2">
<h3 id="_return_values_9">Return Values</h3>
<div class="ulist">
<ul>
<li>
<p><strong>LX_NOT_SUPPORTED</strong>: (0x0C) Not supported.</p>
</li>
</ul>
</div>
</div>
<div class="sect2">
<h3 id="_allowed_from_9">Allowed From</h3>
<div class="paragraph">
<p>Threads</p>
</div>
</div>
<div class="sect2">
<h3 id="_example_9">Example</h3>
<div class="listingblock">
<div class="content">
<pre class="highlight"><code class="language-c" data-lang="c">/* Defragment 1 block of NAND flash instance "my_nand_flash". */
status = lx_nand_flash_partial_defragment(&amp;my_nand_flash, 1);

/* If status is LX_SUCCESS the request was successful. */</code></pre>
</div>
</div>
</div>
<div class="sect2">
<h3 id="_see_also_9">See Also</h3>
<div class="ulist">
<ul>
<li>
<p><a href="#_nand_services">levelx NAND Services</a></p>
</li>
</ul>
</div>
</div>
</div>
</div>
<div class="sect1">
<h2 id="_lx_nand_flash_sector_read">lx_nand_flash_sector_read</h2>
<div class="sectionbody">
<div class="paragraph">
<p>Read NAND flash sector</p>
</div>
<div class="sect2">
<h3 id="_prototype_10">Prototype</h3>
<div class="listingblock">
<div class="content">
<pre class="highlight"><code class="language-c" data-lang="c">UINT lx_nand_flash_sector_read(
    LX_NAND_FLASH *nand_flash,
    ULONG logical_sector,
    VOID *buffer);</code></pre>
</div>
</div>
</div>
<div class="sect2">
<h3 id="_description_10">Description</h3>
<div class="paragraph">
<p>This service reads the logical sector from the NAND flash instance and if successful returns the contents in the supplied buffer. Note that NAND sector size is always the page size of the underlying NAND hardware.</p>
</div>
</div>
<div class="sect2">
<h3 id="_input_parameters_10">Input Parameters</h3>
<div class="ulist">
<ul>
<li>
<p><em>nand_flash</em>: NAND flash instance pointer.</p>
</li>
<li>
<p><em>logical_sector</em>: Logical sector to read.</p>
</li>
<li>
<p><em>buffer</em>: Pointer to destination for contents of the logical sector. Note that the buffer is assumed to be the size of the NAND flash page size and aligned for ULONG access.</p>
</li>
</ul>
</div>
</div>
<div class="sect2">
<h3 id="_return_values_10">Return Values</h3>
<div class="ulist">
<ul>
<li>
<p><strong>LX_SUCCESS</strong>: (0x00) Successful request.</p>
</li>
<li>
<p><strong>LX_ERROR</strong>: (0x01) Error reading NAND flash sector.</p>
</li>
</ul>
</div>
</div>
<div class="sect2">
<h3 id="_allowed_from_10">Allowed From</h3>
<div class="paragraph">
<p>Threads</p>
</div>
</div>
<div class="sect2">
<h3 id="_example_10">Example</h3>
<div class="listingblock">
<div class="content">
<pre class="highlight"><code class="language-c" data-lang="c">/* Read logical sector 20 of the NAND flash instance "my_nand_flash" and place contents in "buffer". */
status = lx_nand_flash_sector_read(&amp;my_nand_flash, 20, buffer);

/* If status is LX_SUCCESS, "buffer" contains the contents of logical sector 20. */</code></pre>
</div>
</div>
</div>
<div class="sect2">
<h3 id="_see_also_10">See Also</h3>
<div class="ulist">
<ul>
<li>
<p><a href="#_nand_services">levelx NAND Services</a></p>
</li>
</ul>
</div>
</div>
</div>
</div>
<div class="sect1">
<h2 id="_lx_nand_flash_sectors_read">lx_nand_flash_sectors_read</h2>
<div class="sectionbody">
<div class="paragraph">
<p>Read multiple NAND flash sectors</p>
</div>
<div class="sect2">
<h3 id="_prototype_11">Prototype</h3>
<div class="listingblock">
<div class="content">
<pre class="highlight"><code class="language-c" data-lang="c">UINT lx_nand_flash_sectors_read(
    LX_NAND_FLASH *nand_flash,
    ULONG logical_sector,
    VOID *buffer,
    ULONG sector_count);</code></pre>
</div>
</div>
</div>
<div class="sect2">
<h3 id="_description_11">Description</h3>
<div class="paragraph">
<p>This service reads the specified number of logical sectors from the NAND flash instance and if successful returns the contents in the supplied buffer. Note that NAND sector size is always the page size of the underlying NAND hardware.</p>
</div>
</div>
<div class="sect2">
<h3 id="_input_parameters_11">Input Parameters</h3>
<div class="ulist">
<ul>
<li>
<p><em>nand_flash</em>: NAND flash instance pointer.</p>
</li>
<li>
<p><em>logical_sector</em>: Logical sector to read.</p>
</li>
<li>
<p><em>buffer</em>: Pointer to destination for contents of the logical sector. Note that the logical sector size is the same as NAND flash page size and the buffer is assumed to be large enough to hold all the sectors to read and aligned for ULONG access.</p>
</li>
<li>
<p><em>sector_count</em>: Number of logical sectors to read.</p>
</li>
</ul>
</div>
</div>
<div class="sect2">
<h3 id="_return_values_11">Return Values</h3>
<div class="ulist">
<ul>
<li>
<p><strong>LX_SUCCESS</strong>: (0x00) Successful request.</p>
</li>
<li>
<p><strong>LX_ERROR</strong>: (0x01) Error reading NAND flash sector.</p>
</li>
</ul>
</div>
</div>
<div class="sect2">
<h3 id="_allowed_from_11">Allowed From</h3>
<div class="paragraph">
<p>Threads</p>
</div>
</div>
<div class="sect2">
<h3 id="_example_11">Example</h3>
<div class="listingblock">
<div class="content">
<pre class="highlight"><code class="language-c" data-lang="c">/* Read 10 logical sectors starting at logical sector 20 of the NAND flash instance "my_nand_flash" and place contents in "buffer". */
status = lx_nand_flash_sectors_read(&amp;my_nand_flash, 20, buffer, 10);

/* If status is LX_SUCCESS, "buffer" contains the contents of logical sectors 20 through 29. */</code></pre>
</div>
</div>
</div>
</div>
</div>
<div class="sect1">
<h2 id="_lx_nand_flash_sector_release">lx_nand_flash_sector_release</h2>
<div class="sectionbody">
<div class="paragraph">
<p>Release NAND flash sector</p>
</div>
<div class="sect2">
<h3 id="_prototype_12">Prototype</h3>
<div class="listingblock">
<div class="content">
<pre class="highlight"><code class="language-c" data-lang="c">UINT lx_nand_flash_sector_release(
    LX_NAND_FLASH *nand_flash,
    ULONG logical_sector);</code></pre>
</div>
</div>
</div>
<div class="sect2">
<h3 id="_description_12">Description</h3>
<div class="paragraph">
<p>This service releases the logical sector mapping in the NAND flash instance. Releasing a logical sector when not used makes the LevelX wear leveling more efficient.</p>
</div>
</div>
<div class="sect2">
<h3 id="_input_parameters_12">Input Parameters</h3>
<div class="ulist">
<ul>
<li>
<p><em>nand_flash</em>: NAND flash instance pointer.</p>
</li>
<li>
<p><em>logical_sector</em>: Logical sector to release.</p>
</li>
</ul>
</div>
</div>
<div class="sect2">
<h3 id="_return_values_12">Return Values</h3>
<div class="ulist">
<ul>
<li>
<p><strong>LX_SUCCESS</strong>: (0x00) Successful request.</p>
</li>
<li>
<p><strong>LX_ERROR</strong>: (0x01) Error NAND flash sector write.</p>
</li>
</ul>
</div>
</div>
<div class="sect2">
<h3 id="_allowed_from_12">Allowed From</h3>
<div class="paragraph">
<p>Threads</p>
</div>
</div>
<div class="sect2">
<h3 id="_example_12">Example</h3>
<div class="listingblock">
<div class="content">
<pre class="highlight"><code class="language-c" data-lang="c">/* Release logical sector 20 of the NAND flash instance "my_nand_flash". */
status = lx_nand_flash_sector_release(&amp;my_nand_flash, 20);

/* If status is LX_SUCCESS, logical sector 20 has been released. */</code></pre>
</div>
</div>
</div>
<div class="sect2">
<h3 id="_see_also_11">See Also</h3>
<div class="ulist">
<ul>
<li>
<p><a href="#_nand_services">levelx NAND Services</a></p>
</li>
</ul>
</div>
</div>
</div>
</div>
<div class="sect1">
<h2 id="_lx_nand_flash_sectors_release">lx_nand_flash_sectors_release</h2>
<div class="sectionbody">
<div class="paragraph">
<p>Release multiple NAND flash sectors</p>
</div>
<div class="sect2">
<h3 id="_prototype_13">Prototype</h3>
<div class="listingblock">
<div class="content">
<pre class="highlight"><code class="language-c" data-lang="c">UINT lx_nand_flash_sectors_release(
    LX_NAND_FLASH *nand_flash,
    ULONG logical_sector,
    ULONG sector_count);</code></pre>
</div>
</div>
</div>
<div class="sect2">
<h3 id="_description_13">Description</h3>
<div class="paragraph">
<p>This service releases the specified number of logical sectors in the NAND flash instance. Releasing a logical sector when not used makes the LevelX wear leveling more efficient.</p>
</div>
</div>
<div class="sect2">
<h3 id="_input_parameters_13">Input Parameters</h3>
<div class="ulist">
<ul>
<li>
<p><em>nand_flash</em>: NAND flash instance pointer.</p>
</li>
<li>
<p><em>logical_sector</em>: Logical sector to release.</p>
</li>
<li>
<p><em>sector_count</em>: Number of logical sectors to release.</p>
</li>
</ul>
</div>
</div>
<div class="sect2">
<h3 id="_return_values_13">Return Values</h3>
<div class="ulist">
<ul>
<li>
<p><strong>LX_SUCCESS</strong>: (0x00) Successful request.</p>
</li>
<li>
<p><strong>LX_ERROR</strong>: (0x01) Error NAND flash sector write.</p>
</li>
</ul>
</div>
</div>
<div class="sect2">
<h3 id="_allowed_from_13">Allowed From</h3>
<div class="paragraph">
<p>Threads</p>
</div>
</div>
<div class="sect2">
<h3 id="_example_13">Example</h3>
<div class="listingblock">
<div class="content">
<pre class="highlight"><code class="language-c" data-lang="c">/* Release 10 logical sectors starting at logical sector 20 of the NAND flash instance "my_nand_flash". */
status = lx_nand_flash_sectors_release(&amp;my_nand_flash, 20, 10);

/* If status is LX_SUCCESS, logical sectors 20 through 29 have been released. */</code></pre>
</div>
</div>
</div>
<div class="sect2">
<h3 id="_see_also_12">See Also</h3>
<div class="ulist">
<ul>
<li>
<p><a href="#_nand_services">levelx NAND Services</a></p>
</li>
</ul>
</div>
</div>
</div>
</div>
<div class="sect1">
<h2 id="_lx_nand_flash_sector_write">lx_nand_flash_sector_write</h2>
<div class="sectionbody">
<div class="paragraph">
<p>Write NAND flash sector</p>
</div>
<div class="sect2">
<h3 id="_prototype_14">Prototype</h3>
<div class="listingblock">
<div class="content">
<pre class="highlight"><code class="language-c" data-lang="c">UINT lx_nand_flash_sector_write(
    LX_NAND_FLASH *nand_flash,
    ULONG logical_sector,
    VOID *buffer);</code></pre>
</div>
</div>
</div>
<div class="sect2">
<h3 id="_description_14">Description</h3>
<div class="paragraph">
<p>This service writes the specified logical sector in the NAND flash instance.</p>
</div>
</div>
<div class="sect2">
<h3 id="_input_parameters_14">Input Parameters</h3>
<div class="ulist">
<ul>
<li>
<p><em>nand_flash</em>: NAND flash instance pointer.</p>
</li>
<li>
<p><em>logical_sector</em>: Logical sector to write.</p>
</li>
<li>
<p><em>buffer</em>: Pointer to the contents of the logical sector. Note that the buffer is assumed to be the size of the NAND flash page size and aligned for ULONG access.</p>
</li>
</ul>
</div>
</div>
<div class="sect2">
<h3 id="_return_values_14">Return Values</h3>
<div class="ulist">
<ul>
<li>
<p><strong>LX_SUCCESS</strong>: (0x00) Successful request.</p>
</li>
<li>
<p><strong>LX_NO_SECTORS</strong>: (0x02) No more free sectors are available to perform the write.</p>
</li>
<li>
<p><strong>LX_ERROR</strong>: (0x01) Error writing NAND flash sector.</p>
</li>
</ul>
</div>
</div>
<div class="sect2">
<h3 id="_allowed_from_14">Allowed From</h3>
<div class="paragraph">
<p>Threads</p>
</div>
</div>
<div class="sect2">
<h3 id="_example_14">Example</h3>
<div class="listingblock">
<div class="content">
<pre class="highlight"><code class="language-c" data-lang="c">/* Write logical sector 20 of the NAND flash instance "my_nand_flash" with the contents pointed to by "buffer". */
status = lx_nand_flash_sector_write(&amp;my_nand_flash, 20, buffer);

/* If status is LX_SUCCESS, logical sector 20 has been written with the contents of "buffer". */</code></pre>
</div>
</div>
</div>
<div class="sect2">
<h3 id="_see_also_13">See Also</h3>
<div class="ulist">
<ul>
<li>
<p><a href="#_nand_services">levelx NAND Services</a></p>
</li>
</ul>
</div>
</div>
</div>
</div>
<div class="sect1">
<h2 id="_lx_nand_flash_sectors_write">lx_nand_flash_sectors_write</h2>
<div class="sectionbody">
<div class="paragraph">
<p>Write multiple NAND flash sectors</p>
</div>
<div class="sect2">
<h3 id="_prototype_15">Prototype</h3>
<div class="listingblock">
<div class="content">
<pre class="highlight"><code class="language-c" data-lang="c">UINT lx_nand_flash_sectors_write(
    LX_NAND_FLASH *nand_flash,
    ULONG logical_sector,
    VOID *buffer,
    ULONG sector_count);</code></pre>
</div>
</div>
</div>
<div class="sect2">
<h3 id="_description_15">Description</h3>
<div class="paragraph">
<p>This service writes the specified number of logical sectors in the NAND flash instance.</p>
</div>
</div>
<div class="sect2">
<h3 id="_input_parameters_15">Input Parameters</h3>
<div class="ulist">
<ul>
<li>
<p><em>nand_flash</em>: NAND flash instance pointer.</p>
</li>
<li>
<p><em>logical_sector</em>: Logical sector to write.</p>
</li>
<li>
<p><em>buffer</em>: Pointer to the contents of the logical sector. Note that the logical sector size is the same as NAND flash page size and the buffer is assumed to be large enough to hold all the sectors to write and aligned for ULONG access.</p>
</li>
<li>
<p><em>sector_count</em>: Number of logical sectors to write.</p>
</li>
</ul>
</div>
</div>
<div class="sect2">
<h3 id="_return_values_15">Return Values</h3>
<div class="ulist">
<ul>
<li>
<p><strong>LX_SUCCESS</strong>: (0x00) Successful request.</p>
</li>
<li>
<p><strong>LX_NO_SECTORS</strong>: (0x02) No more free sectors are available to perform the write.</p>
</li>
<li>
<p><strong>LX_ERROR</strong>: (0x01) Error writing NAND flash sector.</p>
</li>
</ul>
</div>
</div>
<div class="sect2">
<h3 id="_allowed_from_15">Allowed From</h3>
<div class="paragraph">
<p>Threads</p>
</div>
</div>
<div class="sect2">
<h3 id="_example_15">Example</h3>
<div class="listingblock">
<div class="content">
<pre class="highlight"><code class="language-c" data-lang="c">/* Write 10 logical sectors starting at logical sector 20 of the NAND flash instance "my_nand_flash" with the contents pointed to by "buffer". */
status = lx_nand_flash_sectors_write(&amp;my_nand_flash, 20, buffer, 10);

/* If status is LX_SUCCESS, logical sectors 20 through 29 have been written with the contents of "buffer". */</code></pre>
</div>
</div>
</div>
<div class="sect2">
<h3 id="_see_also_14">See Also</h3>
<div class="ulist">
<ul>
<li>
<p><a href="#_nand_services">levelx NAND Services</a></p>
</li>
</ul>
</div>
</div>
</div>
</div>
</div>
<div id="footer">
<div id="footer-text">
Last updated 2025-02-07 08:25:21 UTC
</div>
</div>
</body>
</html>